package com.fh.Set;

import java.util.LinkedHashSet;

//这里主要整理一下linkedHashSet的相关内容
public class LinkedHashSet_introduce {
    @SuppressWarnings({"All"})
    public static void main(String[] args) {
        LinkedHashSet linkedHashSet = new LinkedHashSet();
        /*全面说明：
        1) LinkedHashSet 是 HashSet 的子类
        2）LinkedHashSet 底层是一个 LinkedHashMap，底层维护了一个数组 + 双向链表
        3） LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置，同时使用链表维护元素的次序（图），这使得元素看起来使以插入顺序保存的
        4） LinkedHashSet 不允许添重复元素

        1. 在 LinkedHashSet 中维护的 hash表 和 双向链表 有 head 和 tail
        2. 每一个节点都有before 和after 属性，这样可以形成 双向链表
        3. 在添加一个元素时，现求hash值，再求索引。确定元素在table的位置，然后将添加的元素加入到双向链表（如果已经存在，不添加）同hashSet一样
         tail.next = newElement
         newElement.pre = tail
         tail = newElement

         */
    }
}
